import numpy as np

'''
数组与矩阵运算
'''


def main():
    # 长度为10的一元数组，符合正太分布
    '''
    [ 1.9976071  -1.13135382 -0.67516529 -0.08095515  0.57801015  0.73807975
      0.67618184 -0.19338599  1.19857086  0.81448363]
    '''
    array1 = np.random.randn(10)
    print(array1)

    # 0-9随机的一个数
    # 2
    print(np.random.randint(10))
    # 两行三列
    '''
    [[7 3 3]
    [4 6 9]]
    '''
    print(np.random.randint(10, size=(2, 3)))

    # 一维(20个元素)
    # [3 2 1 5 7 2 2 1 0 4 5 6 1 9 3 7 0 8 3 2]
    print(np.random.randint(10, size=20))

    # 转成4行5列
    '''
    [[8 9 3 6 2]
     [6 9 7 1 9]
     [9 4 7 2 9]
     [8 6 3 9 4]]
    '''
    print(np.random.randint(10, size=20).reshape(4, 5))

    '''
    创建矩阵
    '''
    '''
    [[1 2 3]
     [4 5 6]]
    '''
    print(np.mat([[1, 2, 3], [4, 5, 6]]))

    #所有的array都可以转成mat
    print(np.mat(np.random.randint(10, size=(2, 3))))

    '''
    Array常用函数
    '''

    #去重
    '''
    [[8 9 9]
     [9 2 8]]
     
    [2 8 9]
    '''
    a = np.random.randint(10, size=(2, 3))
    print(a)
    print(np.unique(a))


    # 求和
    # sum是按照列求和
    '''
    [[2 3 2 0 0]
     [5 8 4 3 5]
     [3 1 3 5 7]
     [9 1 5 1 3]]
     
    [19 13 14  9 15]
    '''
    b = np.random.randint(10, size=20).reshape(4, 5)
    print(b)
    print(sum(b))

    # 第一行的和
    print(sum(b[0]))
    # 第一列的和
    print(sum(b[:, 0]))


    # 取整体最大值
    print(b.max())
    # 行最大值
    print(max(b[0]))
    # 列最大值
    print(max(b[:, 0]))

if __name__ == '__main__':
    main()
